package com.witmore.ftp.db.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * FTP文件操作日志实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftp_file_logs")
public class FtpFileLogDO {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户名
     */
    @TableField("username")
    private String username;

    /**
     * 客户端IP
     */
    @TableField("client_ip")
    private String clientIp;

    /**
     * 操作类型（UPLOAD, DOWNLOAD, DELETE, RENAME等）
     */
    @TableField("operation_type")
    private String operationType;

    /**
     * 文件路径
     */
    @TableField("file_path")
    private String filePath;

    /**
     * 文件名
     */
    @TableField("file_name")
    private String fileName;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 操作状态（SUCCESS, FAILED）
     */
    @TableField("status")
    private String status;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 操作耗时（毫秒）
     */
    @TableField("duration")
    private Long duration;

    /**
     * 创建者ID
     */
    @TableField("creator")
    private Integer creator;

    /**
     * 更新者ID
     */
    @TableField("updator")
    private Integer updator;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}
